package pack; import java.util.ArrayList; public class Scheduler { private ArrayList<Counter> counters; private int totalWaitingTime=0; private int totalServingTime =0; private int totalNrOfClients =0; int []countClients =new int[100]; private int peakHour; public Scheduler() { counters = new ArrayList<Counter>(); for (Counter c : counters) { Thread counterThread = new Thread(c); counterThread.start(); } } public void sendClientToCounter(Client c,int arrivalTime) { countClients[arrivalTime]++; int minNrOfClients = 9999; Counter pickedCounter = null; for (int i = 0; i < counters.size(); i++) { if (!counters.get(i).isClosed() && counters.get(i).getQueueSize() < minNrOfClients) { minNrOfClients = counters.get(i).getQueueSize(); pickedCounter = counters.get(i); } } pickedCounter.addClient(c); } public void addCounter(Counter c) { counters.add(c); } public void serveClients() { for (Counter c : counters) { Thread counterThread = new Thread(c); counterThread.start(); } } public void stopCounters(){ for (Counter c : counters) { c.setRunning(false); } } public ArrayList<Counter> getCounters() { return counters; } public float getAverageWaitingTime(){ for(Counter c: counters){ totalWaitingTime +=c.getTotalWaitingTime(); totalNrOfClients +=c.getTotalNumberOfClients(); } return (float)totalWaitingTime/totalNrOfClients; } public float getAverageServingTime(){ for(Counter c: counters){ totalServingTime +=c.getTotalServingTime(); } return (float)totalServingTime/totalNrOfClients; } public int getPeakHour(){ int maxClients = -1234; for(int i=0;i<countClients.length;i++){ if(countClients[i]>maxClients){ maxClients = countClients[i]; peakHour = i; } } return peakHour; } }